<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 06/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>10,000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>3645</td><th>4.36x</th><td>1671</td><td>5946</td><td>7617</td><td>7617</td><th>5.82x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1771</td><th>2.12x</th><td>1460</td><td>2511</td><td>3971</td><td>3971</td><th>3.03x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>1815</td><th>2.17x</th><td>2407</td><td>5097</td><td>7504</td><td>7504</td><th>5.73x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4419</td><th>5.29x</th><td>4291</td><td>4021</td><td>8312</td><td>8312</td><th>6.35x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>1825</td><th>2.18x</th><td>1158</td><td>2149</td><td>3307</td><td>3307</td><th>2.53x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>836</td><th>1x</th><td>617</td><td>692</td><td>1309</td><td>1309</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1397</td><th>1.67x</th><td>775</td><td>689</td><td>1464</td><td>1464</td><th>1.12x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1544</td><th>1.85x</th><td>601</td><td>722</td><td>1323</td><td>1323</td><th>1.01x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>757</td><td>186</td><td>943</td><td>943</td><th>6.33x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>156</td><td>228</td><td>384</td><td>384</td><th>2.58x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>110</td><th>1.90x</th><td>166</td><td>565</td><td>731</td><td>731</td><th>4.91x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>436</td><td>372</td><td>808</td><td>808</td><th>5.42x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>110</td><td>367</td><td>477</td><td>477</td><th>3.20x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>78</td><td>120</td><td>198</td><td>198</td><th>1.33x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>83</td><td>84</td><td>167</td><td>167</td><th>1.12x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>89</td><th>1.53x</th><td>65</td><td>84</td><td>149</td><td>149</td><th>1x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>106</td><td>4225</td><td>4331</td><td>4331</td><th>45.11x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>147</td><td>257</td><td>404</td><td>404</td><th>4.21x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>271</td><th>2.10x</th><td>270</td><td>553</td><td>823</td><td>823</td><th>8.57x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>415</td><td>538</td><td>953</td><td>953</td><th>9.93x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>120</td><td>214</td><td>334</td><td>334</td><th>3.48x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>64</td><td>67</td><td>131</td><td>131</td><th>1.36x</th></tr><tr class='best-time'><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>54</td><td>42</td><td>96</td><td>96</td><th>1x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>222</td><th>1.72x</th><td>52</td><td>68</td><td>120</td><td>120</td><th>1.25x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>110</td><td>262</td><td>372</td><td>372</td><th>2.24x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>187</td><td>332</td><td>519</td><td>519</td><th>3.13x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>607</td><th>1.73x</th><td>389</td><td>886</td><td>1275</td><td>1275</td><th>7.68x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>611</td><td>433</td><td>1044</td><td>1044</td><th>6.29x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>174</td><td>333</td><td>507</td><td>507</td><th>3.05x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>77</td><td>89</td><td>166</td><td>166</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>123</td><td>137</td><td>260</td><td>260</td><th>1.57x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>555</td><th>1.59x</th><td>88</td><td>130</td><td>218</td><td>218</td><th>1.31x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>96</td><td>185</td><td>281</td><td>281</td><th>2.36x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>161</td><td>216</td><td>377</td><td>377</td><th>3.17x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>53</td><th>2.94x</th><td>193</td><td>335</td><td>528</td><td>528</td><th>4.44x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>690</td><td>532</td><td>1222</td><td>1222</td><th>10.27x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>115</td><td>169</td><td>284</td><td>284</td><th>2.39x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>65</td><td>54</td><td>119</td><td>119</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>78</td><td>65</td><td>143</td><td>143</td><th>1.20x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>1.89x</th><td>73</td><td>54</td><td>127</td><td>127</td><th>1.07x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>115</td><td>208</td><td>323</td><td>323</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>185</td><td>229</td><td>414</td><td>414</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>90</td><th>0x</th><td>263</td><td>530</td><td>793</td><td>793</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>483</td><td>446</td><td>929</td><td>929</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>187</td><td>340</td><td>527</td><td>527</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>79</td><td>-1</td><td>78</td><td>78</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>103</td><td>96</td><td>199</td><td>199</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>53</td><th>0x</th><td>46</td><td>-1</td><td>45</td><td>45</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>200</td><td>263</td><td>463</td><td>463</td><th>2.52x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>203</td><td>380</td><td>583</td><td>583</td><th>3.17x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>356</td><th>3.30x</th><td>402</td><td>740</td><td>1142</td><td>1142</td><th>6.21x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>559</td><td>481</td><td>1040</td><td>1040</td><th>5.65x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>179</td><td>419</td><td>598</td><td>598</td><th>3.25x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>79</td><td>105</td><td>184</td><td>184</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>124</td><td>97</td><td>221</td><td>221</td><th>1.20x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>301</td><th>2.79x</th><td>75</td><td>132</td><td>207</td><td>207</td><th>1.12x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>0x</th><td>126</td><td>460</td><td>586</td><td>586</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>0x</th><td>201</td><td>290</td><td>491</td><td>491</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>187</td><th>0x</th><td>320</td><td>694</td><td>1014</td><td>1014</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>0x</th><td>424</td><td>431</td><td>855</td><td>855</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>0x</th><td>149</td><td>264</td><td>413</td><td>413</td><th>0x</th></tr><tr class=''><th class='c1'>ProtoBuf.net</th><td>40</td><th>0x</th><td>67</td><td>44</td><td>111</td><td>111</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>0x</th><td>92</td><td>100</td><td>192</td><td>192</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>133</td><th>0x</th><td>69</td><td>-1</td><td>68</td><td>68</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>96</td><td>177</td><td>273</td><td>273</td><th>2.62x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>140</td><td>193</td><td>333</td><td>333</td><th>3.20x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>38</td><th>3.45x</th><td>186</td><td>335</td><td>521</td><td>521</td><th>5.01x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>361</td><td>389</td><td>750</td><td>750</td><th>7.21x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>103</td><td>144</td><td>247</td><td>247</td><th>2.38x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>53</td><td>51</td><td>104</td><td>104</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>70</td><td>70</td><td>140</td><td>140</td><th>1.35x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>3.09x</th><td>71</td><td>54</td><td>125</td><td>125</td><th>1.20x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>93</td><td>167</td><td>260</td><td>260</td><th>2.39x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>147</td><td>197</td><td>344</td><td>344</td><th>3.16x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>64</td><th>1.88x</th><td>167</td><td>522</td><td>689</td><td>689</td><th>6.32x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>380</td><td>381</td><td>761</td><td>761</td><th>6.98x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>109</td><td>152</td><td>261</td><td>261</td><th>2.39x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>54</td><td>55</td><td>109</td><td>109</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>70</td><td>57</td><td>127</td><td>127</td><th>1.17x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>58</td><th>1.71x</th><td>52</td><td>60</td><td>112</td><td>112</td><th>1.03x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>112</td><td>305</td><td>417</td><td>417</td><th>2.90x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>167</td><td>501</td><td>668</td><td>668</td><th>4.64x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>255</td><th>2.34x</th><td>450</td><td>812</td><td>1262</td><td>1262</td><th>8.76x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>462</td><td>501</td><td>963</td><td>963</td><th>6.69x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>138</td><td>199</td><td>337</td><td>337</td><th>2.34x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>85</td><td>83</td><td>168</td><td>168</td><th>1.17x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>100</td><td>79</td><td>179</td><td>179</td><th>1.24x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>196</td><th>1.80x</th><td>64</td><td>80</td><td>144</td><td>144</td><th>1x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>101</td><td>176</td><td>277</td><td>277</td><th>2.29x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>152</td><td>207</td><td>359</td><td>359</td><th>2.97x</th></tr><tr class=''><th class='c1'>Microsoft JavaScriptSerializer</th><td>61</td><th>3.21x</th><td>184</td><td>349</td><td>533</td><td>533</td><th>4.40x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>377</td><td>394</td><td>771</td><td>771</td><th>6.37x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>110</td><td>152</td><td>262</td><td>262</td><th>2.17x</th></tr><tr class='best-size'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>62</td><td>68</td><td>130</td><td>130</td><th>1.07x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>73</td><td>58</td><td>131</td><td>131</td><th>1.08x</th></tr><tr class='best-time'><th class='c1'>Platform TextSerializer</th><td>55</td><th>2.89x</th><td>61</td><td>60</td><td>121</td><td>121</td><th>1x</th></tr>
</tbody>
</table>
</body>
</html>

